classDiagram
	Nakama <-- WorldRpc : Lua Script
	
	Nakama <-- WorldControl : Lua Module
	
	Nakama <-- Connection
	
	
	Connection : connect_to_server()
	Connection : save_email()
	Connection : get_last_email()
	Connection : clear_last_email()
	Connection : join_world()
	Connection : send_player_color_update()
	Connection : send_position_update()
	Connection : send_direction_update()
	Connection : send_jump()
	Connection : send_spawn()
	Connection : send_text()
	
	Connection *-- Authenticator
	Connection *-- StorageWorker
	
	Authenticator : register()
	Authenticator : login()
	
	StorageWorker : get_player_characters()
	StorageWorker : create_player_character()
	StorageWorker : update_player_character()
	StorageWorker : delete_player_character()
	StorageWorker : get_last_player_character()
	StorageWorker : store_last_player_character()
	
	Connection <-- LoginAndRegister
	
	LoginAndRegister *-- LoginControl
	LoginAndRegister *-- RegisterControl
	LoginAndRegister *-- CharactersControl
	
	Connection <-- ConnectedWorld
	ConnectedWorld *-- Character : many
	ConnectedWorld *-- Player
	
	Character <|-- Player
	
	ConnectedWorld *-- GameUI
	
	GameUI *-- ChatUI
	GameUI *-- NotificationsUI
	GameUI *-- ColorUI